package enums;

/**
 * @className: SOINum
 * @author: ocxz1
 * @date: 2024/12/8 下午5:31
 * @Version: 1.0
 * @description: anneng-ltc-change-v1.0 执行节点枚举定义
 */
public enum SOINodeTypeEnum {

    START_NODE("开始节点"),

    END_NODE("结束节点"),

    EXECUTION_PROCESS_NODE("执行节点"),

    UN_KNOW_NODE("未知节点"),

    ;

    private final String nodeTypeName;

    SOINodeTypeEnum(String nodeTypeName) {
        this.nodeTypeName = nodeTypeName;
    }

    /**
     * 根据节点类型值，获取节点
     * @param nodeTypeValue 节点类型值，字符串
     * @return 节点枚举
     */
    public static SOINodeTypeEnum getNodeTypeName(String nodeTypeName) {
        if (nodeTypeName == null || nodeTypeName.isEmpty()) {
            return UN_KNOW_NODE;
        }

        SOINodeTypeEnum[] values = SOINodeTypeEnum.values();
        for (SOINodeTypeEnum nodeTypeEnum : values) {
            if (nodeTypeEnum.name().equals(nodeTypeName)) {
                return nodeTypeEnum;
            }
        }
        return UN_KNOW_NODE;
    }

    /**
     * 判断是否是开始节点
     * @param nodeTypeValue 节点类型值
     * @return 是返回TRUE
     */
    public static boolean isStartNode(SOINodeTypeEnum nodeTypeEnum) {
        return nodeTypeEnum == START_NODE;
    }

    /**
     * 判断是否是开始节点
     * @param nodeTypeValue 节点类型值
     * @return 是返回TRUE
     */
    public static boolean isStartNode(String nodeTypeName) {
        SOINodeTypeEnum nodeTypeEnum = getNodeTypeName(nodeTypeName);
        return nodeTypeEnum == START_NODE;
    }

    /**
     * 判断是否是结束节点
     * @param nodeType 节点类型值
     * @return 是返回TRUE
     */
    public static boolean isEndNode(SOINodeTypeEnum nodeType) {
        return nodeType == END_NODE;
    }

    /**
     * 判断是否是结束节点
     * @param nodeTypeValue 节点类型值
     * @return 是返回TRUE
     */
    public static boolean isEndNode(String nodeTypeName) {
        SOINodeTypeEnum nodeTypeEnum = getNodeTypeName(nodeTypeName);
        return nodeTypeEnum == END_NODE;
    }
}

    
    